import { Low } from "lowdb";
import { JSONFile } from "lowdb/node";
import path from "path";
import { fileURLToPath } from "url";
import fs from "fs"; // 添加文件系统模块

// 获取当前目录
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const filePath = path.resolve(__dirname, "db.json");

// 确保数据库文件存在
if (!fs.existsSync(filePath)) {
  fs.writeFileSync(
    filePath,
    JSON.stringify({ posts: [], users: [], comments: [] }, null, 2)
  );
  console.log(`✅ Created new database file at ${filePath}`);
}

// 定义默认数据结构
const defaultData = {
  posts: [],
  users: [],
  comments: [],
};

// 创建适配器和数据库实例（关键修复）
const adapter = new JSONFile(filePath);
const db = new Low(adapter, defaultData); // 第二个参数传递默认数据

// 初始化数据库函数
export default async function initializeDB() {
  try {
    // 确保读取数据库
    await db.read();

    // 如果数据库为空，使用默认数据
    if (!db.data || Object.keys(db.data).length === 0) {
      db.data = { ...defaultData };
      await db.write();
      console.log("📊 Database initialized with default data");
    }

    return db;
  } catch (error) {
    console.error("❌ Database initialization failed:", error);

    // 尝试恢复数据库
    try {
      fs.writeFileSync(filePath, JSON.stringify(defaultData, null, 2));
      console.log("🔄 Reset database to default state");
      db.data = { ...defaultData };
      return db;
    } catch (recoveryError) {
      console.error("🔥 Critical database failure:", recoveryError);
      throw recoveryError;
    }
  }
}
